/*
package com.cqw.auth.config;

import com.cqw.auth.service.UserDetailServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

*/
/**
 * @Author: caoqingwen
 * @CreateTime: 2021-07-15 14:55
 * @Description:
 *//*

@Configuration
public class AuthorizationConfig extends AuthorizationServerConfigurerAdapter {

    */
/**
     * 注入jwt的token转换器
     *//*

    @Autowired
    private JwtAccessTokenConverter jwtAccessTokenConverter;


    @Autowired
    @Lazy   //使用懒加载模式
    private PasswordEncoder passwordEncoder;


    */
/**
     * 注入 redis连接工厂
     *//*

    @Autowired
    private RedisConnectionFactory redisConnectionFactory;


    */
/**
     * 注入认证管理器
     *//*

    @Autowired
    private AuthenticationManager authenticationManager;


    */
/**
     * 描述: 创建一个redis 的 tokenStore 存放颁发的 token
     *
     * @return
     *//*

   */
/* @Bean
    public TokenStore tokenStore() {
        return new RedisTokenStore(redisConnectionFactory);
    }*//*



    */
/**
     * 创建JWT的token转换器，签名先使用对称加密
     *
     * @return
     *//*

    @Bean
    public JwtAccessTokenConverter jwtAccessTokenConverter() {
        JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
        jwtAccessTokenConverter.setSigningKey("oauth2.0");
        return jwtAccessTokenConverter;
    }


    */
/**
     * 使用jwt存储token
     *
     * @return
     *//*

    @Bean
    public TokenStore tokenStore() {
        return new JwtTokenStore(jwtAccessTokenConverter);
    }


    */
/**
     * 描述: 第三方应用的配置，只有配置了第三方应用，才能访问授权服务器
     *
     * @param clients
     * @throws Exception
     *//*

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        //创建一个基本的第三方应用，第三方应用少的时候，就放到内存中，多的时候就使用jdbc
        clients.inMemory()
                .withClient("web")//创建一个web的第三方
                .secret(passwordEncoder.encode("web-secret"))   //密码
                .scopes("web-scopes")   //作用域
                .authorizedGrantTypes("authorization_code") //授权方式有4种，这里使用验证码授权，还有密码授权，静默授权，客户端授权
                .redirectUris("https://www.baidu.com")  //访问成功后跳转的地址
                .accessTokenValiditySeconds(7200)   //token过期时间设置2小时

                .and()
                .withClient("ios")
                .secret(passwordEncoder.encode("ios-secret"))
                .scopes("ios-scopes")
                .authorizedGrantTypes("implicit")   //静默授权
                .redirectUris("https://www.baidu.com")
                .accessTokenValiditySeconds(7200)

                .and()
                .withClient("api")
                .secret(passwordEncoder.encode("api-secret"))
                .scopes("api-scopes")
                .authorizedGrantTypes("password")   //密码授权
                .redirectUris("https://www.baidu.com")
                .accessTokenValiditySeconds(7200)

                .and()
                .withClient("client")
                .secret(passwordEncoder.encode("client-secret"))
                .scopes("client-scopes")
                .authorizedGrantTypes("client_credentials") //客户端授权
                .redirectUris("https://www.baidu.com")
                .accessTokenValiditySeconds(7200);

    }


    @Autowired
    private UserDetailServiceImpl userDetailService;

    */
/**
     * 描述: token 的存储方式 我们先存在 redis 里面
     *
     * @param endpoints
     * @throws Exception
     *//*

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        //使用redis存储token,密码授权需要认证管理器
        //endpoints.tokenStore(tokenStore()).authenticationManager(authenticationManager);

        //使用jwt存储token
        endpoints.tokenStore(tokenStore())
                .userDetailsService(userDetailService)
                .authenticationManager(authenticationManager)
                .accessTokenConverter(jwtAccessTokenConverter);

    }
}
*/
